import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np

def set_chinese_font():
    """设置中文字体"""
    plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
    plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

set_chinese_font()

def plane_geometry():
    # 创建图形和坐标轴
    fig, axes = plt.subplots(2, 3, figsize=(15, 10))
    
    # 圆形
    circle = patches.Circle((0, 0), radius=1, fill=False, edgecolor='blue', linewidth=2)
    axes[0, 0].add_patch(circle)
    axes[0, 0].set_xlim(-1.5, 1.5)
    axes[0, 0].set_ylim(-1.5, 1.5)
    axes[0, 0].set_aspect('equal')
    axes[0, 0].set_title(f'圆形 (半径=1)\n面积={np.pi:.2f}, 周长={2*np.pi:.2f}')
    axes[0, 0].grid(True)
    
    # 矩形
    rectangle = patches.Rectangle((0, 0), 3, 2, fill=False, edgecolor='red', linewidth=2)
    axes[0, 1].add_patch(rectangle)
    axes[0, 1].set_xlim(-0.5, 3.5)
    axes[0, 1].set_ylim(-0.5, 2.5)
    axes[0, 1].set_aspect('equal')
    axes[0, 1].set_title(f'矩形 (3×2)\n面积=6, 周长=10')
    axes[0, 1].grid(True)
    
    # 三角形
    triangle = patches.Polygon([[0, 0], [3, 0], [1.5, 2]], fill=False, edgecolor='green', linewidth=2)
    axes[0, 2].add_patch(triangle)
    axes[0, 2].set_xlim(-0.5, 3.5)
    axes[0, 2].set_ylim(-0.5, 2.5)
    axes[0, 2].set_aspect('equal')
    axes[0, 2].set_title('三角形')
    axes[0, 2].grid(True)
    
    # 多边形
    hexagon = patches.RegularPolygon((0, 0), 6, radius=1, orientation=0, 
                                    fill=False, edgecolor='purple', linewidth=2)
    axes[1, 0].add_patch(hexagon)
    axes[1, 0].set_xlim(-1.5, 1.5)
    axes[1, 0].set_ylim(-1.5, 1.5)
    axes[1, 0].set_aspect('equal')
    axes[1, 0].set_title('正六边形')
    axes[1, 0].grid(True)
    
    # 椭圆
    ellipse = patches.Ellipse((0, 0), 3, 2, fill=False, edgecolor='orange', linewidth=2)
    axes[1, 1].add_patch(ellipse)
    axes[1, 1].set_xlim(-2, 2)
    axes[1, 1].set_ylim(-1.5, 1.5)
    axes[1, 1].set_aspect('equal')
    axes[1, 1].set_title('椭圆')
    axes[1, 1].grid(True)
    
    # 隐藏最后一个子图
    axes[1, 2].axis('off')
    
    plt.tight_layout()
    plt.show()

plane_geometry()